<?php 
 header("Content-type:text/html;charset=utf8");
 require_once("../Const.php");

  $conn = new mysqli(host,mysql_username,mysql_password);

  if (!$conn) {
  	die("连接失败".$conn->connect_error);
  }

   $conn -> set_charset('utf8');
   echo "<br>字符集".$conn -> character_set_name()."<br>";


  $cDB = "create database if not exists objc_db";
  if ($conn->query($cDB)==false) {
  	die("创建数据库objc_db失败".$conn->error);
  }
  $conn->select_db("objc_db");

   $cTable = "create table if not exists MyGuests (mark int unsigned auto_increment primary key,
     firstName varchar(30) not null,
     lastName varchar(30) not null,
     email varchar(50) default '504350456@qq.com',
     reg_date timestamp
    )";
    
   if ($conn->query($cTable)==false) {
   	 die("创建表MyGuests失败".$conn->error);
   }


	$firstName = "dasd大发".random_int(2,1000);
	$lastName = "zxcz家".random_int(10,2000);
	$email = "123.@sina.com";
	$insetSql = "INSERT INTO MyGuests (firstName,lastName,email) values (?,?,?)";

  //初始化 statement 对象 代表一个prepared语句。只能这样创建，创建的时候已经和conn关联

  //php的方法特点，，，面向过程时，方法以扩展名开始，后面接类名，最后接方法，，，，，对象调用时，方法前面不需要写类名了，直接接方法
  

  //生成一个预处理对象，并且和mysqli关联
  $stmt = $conn -> stmt_init();
  ////预处理语句
  if ($stmt -> prepare($insetSql)) {
    // 绑定参数 ,第一个参数指明后面插入数据的类型，s:字符串 d：double i:integer b:blob(二进制)
    //必须每个参数都指定
    //后面的操作都是根据绑定参数来操作的
    //通过告诉数据库参数的数据类型，可以降低 SQL 注入的风险
      $stmt -> bind_param('sss',$firstName,$lastName,$email);
      //执行
      $stmt -> execute();

      $firstName = "d发".random_int(2,1000);
      $lastName = "家".random_int(10,2000);
      $email = "12faf3.@sina.com";
      $stmt -> execute();

      $firstName = "d发".random_int(2,1000);
      $lastName = "家".random_int(10,2000);
      $email = "12faf3.@sina.com";
      $stmt -> execute();
  }
//使用预处理语句，可以模块化的操作多条数据
//预处理语句用于执行多个相同的 SQL 语句，并且执行效率更高
  var_dump($stmt);



  echo "成功";
  $conn -> close();

 ?> 